#pragma once
#include <iostream>

namespace teflon
{
    struct Logger
    {
    private:
    
    public:
        Logger();
        
        void log(const char* message);
    };

    template<class TArg>
    void panic(TArg&& arg)
    {
        std::cerr << arg << std::endl;
    }

    template <class TFirst, class... TRest>
    void panic(TFirst &&first, TRest &&...rest)
    {
        std::cerr << first;
        panic(std::forward<TRest>(rest)...);
    }

    template <class... TArgs>
    void panicIf(bool condition, TArgs &&...args)
    {
        if (condition)
            panic(std::forward<TArgs>(args)...);
    }
    
}

